iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

用LeetCode來訓練大腦的邏輯思維系列 第 25

LeetCode 367. Valid Perfect Square

  • 分享至 

  • xImage
  •  

題目

Given a positive integer num, write a function which returns True if num is a perfect square else False.

Follow up: Do not use any built-in library function such as sqrt.

題意

判斷給定值是否為完全平方數

Example 1:

Input: num = 16
Output: true

Example 2:

Input: num = 14
Output: false

解題想法

宣告最小數min = 1,最大數max = Math.floor(num / 2)
使用二分法縮小範圍,取得中間值mid = (min + max) / 2
mid的平方小於參數,將min設為mid
mid的平方大於參數,將max設為mid

Solution

var isPerfectSquare = function (num) {
  if (num < 1) return false;
  if (num === 1) return true;
  let min = 1;
  let max = Math.floor(num / 2);

  while (min <= max) {
    let mid = (min + max) / 2;
    if (mid * mid == num) {
      return true;
    } else if (mid * mid < num) min = Math.floor(mid + 1);
    else {
      max = Math.ceil(mid - 1);
    }
  }
  return false
};

上一篇
LeetCode 344. Reverse String
下一篇
LeetCode 387. First Unique Character in a String
系列文
用LeetCode來訓練大腦的邏輯思維30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言